{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Python 机器学习实战 ——代码样例\n",
    "\n",
    "# 第十三章 主成分分析"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 使用主成分分析 Iris 数据集进行降维"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x12e565db588>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nSUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x12e49d6e588>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 将matplotlib的图表直接嵌入到Notebook之中。\n",
    "%matplotlib inline  \n",
    "\n",
    "# 导入需要的包。\n",
    "\n",
    "import matplotlib.pyplot as plt \n",
    "from sklearn.decomposition import PCA\n",
    "from sklearn.datasets import load_iris\n",
    "\n",
    "\n",
    "# 加载数据集。\n",
    "\n",
    "data = load_iris()  \n",
    "y = data.target  \n",
    "x = data.data  \n",
    "\n",
    "# 加载 PCA算法，设置降维后主成分数目为 2。\n",
    "\n",
    "pca = PCA(n_components=2)  \n",
    "\n",
    "# 得到新的样本点。\n",
    "\n",
    "reduced_x = pca.fit_transform(x)  \n",
    "red_x, red_y = [], []  \n",
    "blue_x, blue_y = [], []  \n",
    "green_x, green_y = [], []  \n",
    "  \n",
    "for i in range(len(reduced_x)):  \n",
    "    if y[i] == 0:  \n",
    "        red_x.append(reduced_x[i][0])  \n",
    "        red_y.append(reduced_x[i][1])  \n",
    "    elif y[i] == 1:  \n",
    "        blue_x.append(reduced_x[i][0])  \n",
    "        blue_y.append(reduced_x[i][1])  \n",
    "    else:  \n",
    "        green_x.append(reduced_x[i][0])  \n",
    "        green_y.append(reduced_x[i][1])  \n",
    "\n",
    "# 最后，将结果可视化，用三种形状和颜色表示三个类别。\n",
    "\n",
    "plt.scatter(red_x,red_y,c='r',marker='o')  \n",
    "plt.scatter(blue_x,blue_y,c='b',marker='x')  \n",
    "plt.scatter(green_x,green_y,c='g',marker='^')  \n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 利用 PCA进行图像压缩"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "图像可以看作一个二维的矩阵，每个像素点就对应了它的一个特征维度。例如，一幅宽高为 20乘20 个像素的图像就有 400 个特征维度。利用主成分分析，可以允许我们用尽可能少的特征来代表原始图片中的绝大部分信息，从而达到降维、减少计算量的目的。\n",
    "\n",
    "我们使用的数据集是 MNIST 手写数字数据集，每个样本图像的宽高为 28乘以28，也就是说每个原始样本具有 784 个特征。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0x12e55572710>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x12e5554b9e8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 导入需要的库。\n",
    "\n",
    "import numpy as np\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.datasets import fetch_mldata\n",
    "from sklearn.decomposition import PCA\n",
    "\n",
    "# 导入 MNIST 数据集。\n",
    "\n",
    "mnist = fetch_mldata('MNIST original')\n",
    "x = mnist[\"data\"]\n",
    "y = mnist[\"target\"]\n",
    "\n",
    "# 调用 PCA函数。\n",
    "\n",
    "pca = PCA()\n",
    "pca.fit(x)\n",
    "\n",
    "# 计算各个 n 下的累计贡献率。累计贡献率达到 90%时的主成分数目 d=87。\n",
    "\n",
    "cumsum = np.cumsum(pca.explained_variance_ratio_)\n",
    "d = np.argmax(cumsum >= 0.9) + 1\n",
    "\n",
    "# 绘制累计贡献率与主成分数目关系图。\n",
    "\n",
    "plt.plot(cumsum)\n",
    "plt.ylim(0,1.1)\n",
    "plt.xlabel('no. of principals',fontsize=16)\n",
    "plt.ylabel('explained variance ratio',fontsize=16)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由于压缩时部分信息丢失，图像清晰度将有所降低。下面的代码可以让我们观察主成分数为 5、15、35、85 时，图像的压缩效果。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x12e0006ab00>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 用主成分等于5、15、35、85 时降维\n",
    "Xr = []\n",
    "for n in [5,15,35,85]:\n",
    "    pca = PCA(n_components=n)\n",
    "    X_reduced = pca.fit_transform(x)\n",
    "    X_recovered = pca.inverse_transform(X_reduced)\n",
    "    Xr.append(X_recovered)\n",
    "\n",
    "# 数据整理。\n",
    "\n",
    "instances = []\n",
    "for i in range(10):\n",
    "    instances.append(x[y == i][0])\n",
    "    for j in range(1,5):\n",
    "        instances.append(Xr[j-1][y == i][0])\n",
    "\n",
    "# 绘制效果图。\n",
    "\n",
    "def plot_digits(instances):\n",
    "    images = [instance.reshape(28,28) \n",
    "                for instance in instances] \n",
    "    row_images = []\n",
    "    for row in range(5):\n",
    "        rimages = images[row * 5 : (row + 1) * 5]\n",
    "        row_images.append(np.concatenate(rimages, axis=1))\n",
    "    image = np.concatenate(row_images, axis=0)\n",
    "    plt.imshow(image, cmap = matplotlib.cm.binary)\n",
    "    plt.axis(\"off\")\n",
    "\n",
    "plt.figure(figsize=(7, 4))\n",
    "plt.subplot(121)\n",
    "plot_digits(instances[:25])\n",
    "plt.subplot(122)\n",
    "plot_digits(instances[25:])\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "上图显示了原始数据 ( 第 1 列 ) 与 PCA压缩恢复后的数据 ( 第 2、3、4、5 列对应的主成分数目分别为 5、15、35、85 )，可见当主成分数目 d=85 时，图像已经相当清晰。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
